package com.group3.utils;

import org.apache.commons.lang3.StringUtils;


/**
 * DesensitizationUtil
 *
 * @author HY
 * 2021/07/15 17:21
 **/


import lombok.Data;

/**
 * Description 脱敏工具类
 * @author 余久
 * @Date 2021/07/15 17:21
 **/

@Data
public class DesensitizationUtil {

    /**
     * @Description 手机号脱敏
     * @Author HY
     * @Date 2021/07/15 17:21
     * @param str
     * @return: void
     **/
    public static String  Phone(String str) {
        if (StringUtils.isBlank(str)) {
            return "";
        }
        return StringUtils.left(str, 3).concat(
                StringUtils.removeStart(
                        StringUtils.leftPad(
                                StringUtils.right(str, 4), StringUtils.length(str), "*"), "***"));
//        return str.substring(str.length() - 4);
    }

    /**
     * @Description 身份证号脱敏
     * [身份证号] 前六位，后四位，其他用星号隐藏每位1个星号<例子:451002********1647>
     * @Author HY
     * @Date 2021/07/15 17:22
     * @param str
     * @return: void
     **/
    public static String IdCard(String str) {
        if (StringUtils.isBlank(str)) {
            return "";
        }
        return StringUtils.left(str, 6)
                .concat(StringUtils.removeStart(
                        StringUtils.leftPad(
                                StringUtils.right(str, 4), StringUtils.length(str), "*"), "******"));

//        return str.substring(str.length() - 4);
    }

    /**
     * @Description 邮箱脱敏
     * @Author HY
     * @Date 2021/07/15 17:22
     * @param email
     * @return: void
     **/
    public static String Email(String email) {
//        if (StringUtils.isBlank(str)) {
//            return "";
//        }
//        int index = StringUtils.indexOf(str, "@");
//        if (index <= 1) {
//            return str;
//        } else {
//            return StringUtils.rightPad(
//                    StringUtils.left(str, 1), index, "*")
//                    .concat(StringUtils.mid(str, index, StringUtils.length(str)));
//        }
        if (StringUtils.isBlank(email)) {
            return "";

        }

        int index = StringUtils.indexOf(email, "@");
        if (index < 1) {
            return email;
        } else {
//             特殊处理： index = 6 表示部分隐藏时默认用6个*表示用户名
            return StringUtils.rightPad(StringUtils.left(email, 1), 5, "*")
                    .concat(StringUtils.mid(email, index, StringUtils.length(email)));
        }
//        rightPad 右侧补齐
//        left  获取字符串左侧指定长度的字符串
//        concat    合并字符串
//        mid   得到字符串str从pos开始len长度的子串，pos小于0，则设为0。

    }
}
